
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{amscd}
\usepackage{amsfonts}
\usepackage{graphicx}%
\usepackage{fancyhdr}


\theoremstyle{plain} \numberwithin{equation}{section}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{conjecture}{Conjecture}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{finalremark}[theorem]{Final Remark}
\newtheorem{remark}[theorem]{Remark}
\newtheorem{example}[theorem]{Example}
\newtheorem{question}{Question} \topmargin-2cm

\textwidth6.5in
\textheight8.5in
\setlength{\topmargin}{0in} \addtolength{\topmargin}{-\headheight}
\addtolength{\topmargin}{-\headsep}

\setlength{\oddsidemargin}{0in}

\oddsidemargin  0.0in \evensidemargin 0.0in \parindent2em



\pagestyle{fancy}\lhead{Teaching Statement} \rhead{October 2013}
\chead{{\large{\bf Yang Wang}}} \lfoot{} \rfoot{\bf \thepage} \cfoot{}

\newcounter{list}


\begin{document}

\raisebox{1cm}

After 30 years as a student, it is exciting to have the opportunity
to teach; at the same time, I also feel a bit nervous because teaching means much more responsibility.
I believe I am ready to teach undergraduate classes in systems (architecture, OS, and distributed
systems) and classes in advanced OS and distributed systems at the graduate level. My plan is to
focus on the basics: making students interested in my course and making sure that they understand
its contents. I will elaborate my plan by using the distributed systems class as an example.

\paragraph{Making students interested}
Just as when writing a paper, it is not easy to get one's audience interested.
Students attend a course for different reasons: junior undergraduates
take required courses that cover the fundamentals of computer science; senior
undergraduates or masters may prefer courses that teach them techniques
that are useful in practice so that they can find jobs easily; PhDs
may take a course so that they can develop an initial understanding of a field
that they are previously not familiar with. Fortunately, the study of distributed
systems can appeal to all these constituencies so that attracting students
may not require much effort: distributed computing presents classic and interesting
problems; it is used in many big companies such as Google; and it is a hot research
topic with many open problems.

However, just because the field is interesting does not necessarily mean that I can present it in an
interesting way. I plan to organize my course around several key topics in distributed systems
including consensus, consistency, scalability, etc.  And I will emphasize different aspects
depending on the level of my students. For example, for senior undergraduates, I will
emphasize approaches used in practice, e.g. MapReduce, and
ask them to solve problems with these tools. For PhDs, I will focus
more on current research topics and I may encourage them to come
up projects by themselves.

%and I have seen many counter examples in my student life:
%sometimes I see beautify math but do not see how it is connected to real life;
%sometimes I was asked to do projects with deprecated tools, which makes me
%feel a waste of time; sometimes the professor is too enthusiastic about his own
%research topic and ignores many others I am interested in. These are all the lessons I
%need to learn.




\paragraph{Make students understand.} Although interesting, a distributed systems course
is hard to teach because the material it covers is both hard to explain and hard to understand. I have learned
three important lessons during my life as a student and
I will try to apply them in my classes.

First, it helps a lot to think independently about a problem before reading the correct
solution. In my experience, answering questions like ``why doesn't a simpler solution work?'' or
``how did the authors find this solution?'' is as important as
learning the correct solution. I usually
spend about twenty minutes trying to figure out a solution by myself after I understand
a problem. Of course in
most cases I can not get a complete solution in such a short time, but in surprisingly
many cases, my sketch is pretty similar to the final solution, and this greatly helps
me understand the solution. And when I can not find any correct
direction at all, at least I appreciate why the problem is so challenging!
I therefore plan to encourage students to
think before presenting them with the answer: in the homework, I may ask students to spend
thirty minutes thinking of a problem that we will discuss in the next class and to write
down whatever they have thought about, specifically why it may work and the limitation that
they can see in their solution. I will then spend some time discussing students' solutions
at the start of the next class.

Second, as a professor I will try to never forget that I am much more familiar with the
material that I am teaching than my students are and that what may appear obvious to me
is rightly likely not to be so to my students. I will work hard at creating an environment
where students feel comfortable to ask for clarifications.

Third, as a systems course it is fundamental that students get their hands dirty,
because the experience of running a real system not only helps students in their understanding,
but provides them with useful skills for their future career. Requiring
students to get their hands dirty is a bit tricky in a distributed systems class since
deploying and running a complicated distributed system is not an easy task; however
I am confident that my experience will allow me to design
appropriate projects and help students overcome unexpected problems.

\end{document}
